#include "OneWire.h"

#define DS18B20_SKIP_ROM 0xCC
#define DS18B20_CONVERT_T 0x44
#define DS18B20_READ_SCRATCHPAD 0xBE

/**
  * @brief   进行温度转换
  * @details 
  * @param   
  * @retval  
  */
void DS18B20_ConvertT() {
	OneWire_Init();
	OneWire_SendByte(DS18B20_SKIP_ROM);
	OneWire_SendByte(DS18B20_CONVERT_T);
}

/**
  * @brief   读取温度
  * @details 如为负数直接*-1可得其正数，右移四位为整数部分，低四位*625可得小数的十进制
  * @param   
  * @retval  int 包含符号位的温度，低四位为小数，接着七位为整数，剩余5位高位为符号位
  */
int DS18B20_ReadTemp() {
	int temp;
	OneWire_Init();
	OneWire_SendByte(DS18B20_SKIP_ROM);
	OneWire_SendByte(DS18B20_READ_SCRATCHPAD);
	temp = OneWire_ReceiveByte();
	temp |= OneWire_ReceiveByte() << 8;
	return temp;
}